#!/bin/bash
######################################################################
#                            oh-my-i3
# Date    : 12/12/2015
# Author  : Allen_Qiu
# Version : v1.1
#
# 依赖:conky feh (可选推荐:xcompmgr freetype-infinality)
# 部分特性可能需要新版本支持，请更新至最新版本或自行修改相应部分
# 更多内容请参考:
# i3 User’s Guide: http://i3wm.org/docs/userguide.html
# oh-my-i3 github: https://github.com/ID1258/oh-my-i3.git
#
######################################################################

# => 开机自启（根据需要取消相应的注释#）
# 壁纸须先安装feh，并在此指定路径
#exec --no-startup-id feh --bg-scale "$HOME/.config/i3/wallpaper.png"
exec --no-startup-id feh --bg-scale "$HOME/.config/i3/vim_1080p.png"
#exec --no-startup-id feh --bg-scale "/tmp/himiwari.png"
# 设置透明须先安装xcompmgr，并在此指定软件和透明度（默认0.75），sleep保证transset在其所设置的软件之后启动，根据情况调节大小
#exec --no-startup-id xcompmgr &
#exec --no-startup-id compton -b &
exec --no-startup-id picom -b &
exec --no-startup-id sleep .2 && exec transset -n i3bar 0.75
# 建议另外指定一个脚本来启动通用的开机自启项目
exec --no-startup-id $HOME/.config/i3/autostart

# => 快捷启动
#bindsym $mod+Return exec --no-startup-id xfce4-terminal
bindsym $mod+r      exec --no-startup-id xfce4-terminal
bindsym $mod+f      exec --no-startup-id rofi -show run -b -fn 'Monaco-12' -nb '#2A373E' -nf '#FFFFFF' -sb '#11171A' -sf '#3399FF'
bindsym $mod+t      exec --no-startup-id rofi -show drun
bindsym $mod+e      exec --no-startup-id thunar
bindsym Print       exec --no-startup-id xfce4-screenshooter -r
#bindsym $mod1+s  exec --no-startup-id xfce4-screenshooter -r

# amixer
#bindsym VOLUP exec amixer set Master 5%+
#bindsym VOLDN exec amixer set Master 5%-

#exec --no-startup-id i3-msg 'workspace 3; exec /usr/bin/firefox'

# => 设定mod键与工作区名
set $mod  Mod4
set $WS1  1
set $WS2  2
set $WS3  3
set $WS4  4
set $WS5  5
set $WS6  6
set $WS7  7
set $WS8  8
set $WS9  9
set $WS0 10

# => 工作区切换
# 自动切换到新打开的窗口(需4.12版本支持)
focus_on_window_activation focus
# 重复切换到当前工作区时会返回上一个所在工作区，有可能造成工作区错位
#workspace_auto_back_and_forth yes
# 注释部分请依据个人喜好更改并取消注释，且把i3-sensible-terminal替换为常用term
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 0


# => 自定义窗口（支持定义边框类型，窗口布局，大小调整，自动归类工作区等等，多个定义用,隔开）
#for_window [class="(?i)thunar"] move container to workspace $WS2, workspace $WS5, layout tabbed

# => 窗口边框类型（边框类型有normal正常/none无边框/pixel 1 自定义宽度）
# 默认普通窗口的边框类型
new_window pixel 1
# 默认浮动窗口的边框类型
new_float normal
# 取消工作区边缘的边框
hide_edge_borders smart
# 在三种边框类型中切换
bindsym $mod+b border toggle

# => 新建窗口的分割方向
bindsym $mod+u split h
bindsym $mod+y split v

# => 移动窗口
bindsym $mod+Left  move left
bindsym $mod+Down  move down
bindsym $mod+Up    move up
bindsym $mod+Right move right

# => 切换工作区
bindsym $mod+Tab workspace next
bindsym $mod+Shift+Tab workspace prev 

# => 调整窗口大小
bindsym $mod+Shift+Left  resize shrink width  10 px or 1 ppt
bindsym $mod+Shift+Down  resize grow   height 10 px or 1 ppt
bindsym $mod+Shift+Up    resize shrink height 10 px or 1 ppt
bindsym $mod+Shift+Right resize grow   width  10 px or 1 ppt

# => 关闭窗口
bindsym mod1+F4 kill

# => 焦点切换
# 焦点跟随鼠标移动
focus_follows_mouse yes
# 焦点切换到父窗口
bindsym $mod+q focus parent
# 焦点切换回子窗口
bindsym $mod+Shift+q focus child
# 焦点切换到浮动窗口
bindsym $mod+Shift+space focus mode_toggle
# 窗口焦点切换
bindsym $mod+w focus up
bindsym $mod+s focus down
bindsym $mod+a focus left
bindsym $mod+d focus right
bindsym $mod+h focus left
bindsym $mod+k focus down
bindsym $mod+j focus up
bindsym $mod+l focus right

# => 布局切换
# 切换到堆叠布局
# bindsym $mod+z layout stacking
# 切换到标签布局
# bindsym $mod+x layout tabbed
# 切换到平铺布局（竖直/水平）
# bindsym $mod+c layout toggle split
# 在所有布局中轮回切换
bindsym $mod+x layout toggle all
# 窗口切换到全屏
#bindsym $mod+f fullscreen toggle
# 窗口切换到浮动
bindsym $mod+v floating toggle
# 窗口切换为粘滞
bindsym $mod+g sticky toggle

# => 移动窗口到另一个工作区
bindsym $mod+mod1+Left  move container to workspace prev, workspace prev
bindsym $mod+mod1+Right move container to workspace next, workspace next
bindsym $mod+mod1+1 move container to workspace $WS1, workspace $WS1
bindsym $mod+mod1+2 move container to workspace $WS2, workspace $WS2
bindsym $mod+mod1+3 move container to workspace $WS3, workspace $WS3
bindsym $mod+mod1+4 move container to workspace $WS4, workspace $WS4
bindsym $mod+mod1+5 move container to workspace $WS5, workspace $WS5
bindsym $mod+mod1+6 move container to workspace $WS6, workspace $WS6
bindsym $mod+mod1+7 move container to workspace $WS7, workspace $WS7
bindsym $mod+mod1+8 move container to workspace $WS8, workspace $WS8
bindsym $mod+mod1+9 move container to workspace $WS9, workspace $WS9
bindsym $mod+mod1+0 move container to workspace $WS0, workspace $WS0

# => 暂存窗口（额外的可隐藏浮动窗口，取消浮动还原成普通窗口）
# 转换普通窗口为暂存窗口
bindsym $mod+Shift+minus move scratchpad
# 呼出/隐藏暂存窗口
bindsym $mod+minus scratchpad show

# => 重新载入（更改配置文件后只须重载即可生效，不包含自启部分）
bindsym mod1+Shift+r restart

# => 电源管理（Pause Break键呼出)
set $mode_system 系统:锁屏(L) 熄屏(C) 注销(O) 关机(P) 重启(R) 挂起(S) 取消(Esc)
bindsym Pause mode "$mode_system"
mode "$mode_system" {
    bindsym l exec i3lock -c '#2A373E', exec sleep .1 && exec xset dpms force off, mode "default"
    bindsym c exec sleep .1 && exec xset dpms force off, mode "default"
    bindsym o exec i3-msg exit
    bindsym p exec systemctl poweroff
    bindsym r exec systemctl reboot
    bindsym s exec systemctl suspend
    bindsym Escape mode "default"
}

############################# 主题相关 ###############################
# adapta主题配色

# 字体
#font pango:Monaco 10
font pango:WenQuanYi Micro Hei 10

# 窗口颜色                边框    背景    文字    提示
client.focused          #4DB6AC #009688 #FFFFFF #2A373E
client.focused_inactive #5F757F #5F757F #FFFFFF #3399FF
client.unfocused        #263238 #263238 #FFFFFF #3399FF
client.urgent           #990000 #990000 #FFFFFF #990000
client.placeholder      #000000 #000000 #FFFFFF #000000
client.background       #FFFFFF

# i3bar
bindsym $mod+m bar mode toggle
bar {
    # 调用i3status
    status_command i3status
    # i3bar调用
    #status_command conky -c $HOME/.i3/conkyrc_bar
    # 调用net_speed.sh
    status_command exec ~/.config/i3/net-speed.sh
    # 显示位置
    position top
    # 是否隐藏
    #mode hide
    # 显示/隐藏切换键
    #modifier $mod
    # 拆解工作区名（隐藏前面的1:2:3:……）
    strip_workspace_numbers yes
    # 定义分隔符（适用于i3status）
    #separator_symbol " "
    colors {
        background #2A373E
        statusline #FFFFFF
        #eparator  #3399FF
        # 工作区颜色         边框    背景    文字
        focused_workspace  #212B30 #4DB6AC #FFFFFF
        active_workspace   #FFFFFF #FFFFFF #FFFFFF
        inactive_workspace #2A373E #2A373E #FFFFFF
        urgent_workspace   #990000 #990000 #FFFFFF
        #binding_mode       #990000 #990000 #FFFFFF
    }
}
